﻿using System;
using System.Linq;


namespace WindMill.Models.Controladoria
{
    public partial class Sequencia
    {
        public static int GetSequencia(int codFilial, EDMControladoria context, string wSequencia = null,bool createIfNotExist = false)
        {
            var result = 0;

            try
            {
                // var context = OracleConnectionPool.GetPool().GetDbContext(typeof(EDMControladoria).ToString()) as EDMControladoria;

                var qSequencia = context.Sequencias.Where(c => c.CodFilial == codFilial && (c.NomeSequencia == null || c.NomeSequencia == wSequencia)).ToList();

                var seq = qSequencia.FirstOrDefault();

                if (seq != null && seq.NomeSequencia.Equals(wSequencia))
                {
                    seq.ValSequencia = seq.ValSequencia + 1;
                    context.Sequencias.Attach(seq);
                    context.SaveChanges();
                    result = Convert.ToInt32(seq.ValSequencia);
                }
                else if (createIfNotExist)
                {
                    var novaSequencia = new Sequencia();
                    novaSequencia.CodFilial = codFilial;
                    novaSequencia.ValSequencia = 1;
                    novaSequencia.NomeSequencia = wSequencia;
                    context.Sequencias.Attach(novaSequencia);
                    context.SaveChanges();
                    result = 1;
                }

            }
            catch (Exception ex)
            {
              throw new Exception("Erro ao buscar o valor da sequencia, consulte exceção interna ", ex);
            }
            return result;
        }
    }
}
